home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d12
/
scd113.arc
/
SC_BASE.H
< prev
next >
Wrap
Text File
|
1990-06-14
|
20KB
|
592 lines
/*************************************************
** **
** sc_base.h **
** **
** SoftC Dbase Library common header **
** **
** Copyright (C) 1988, 1989 by **
** Kim Schumann **
** 16820 3rd St NE **
** Ham Lake, MN 55304 **
** (612) 434-6968 **
** **
** All rights reserved. **
*************************************************/
/**********
*
* Function Return Codes
*
**********/
#define SC_FILENGTH 7 /* WARNING - file length is incorrect */
#define SC_FLDROUND 6 /* WARNING - numeric field rounded */
#define SC_FLDTRUNC 5 /* WARNING - data field truncated */
#define SC_NOFIND 4 /* WARNING - could not find key in index file */
#define SC_END 3 /* WARNING - no more keys */
#define SC_EMPTY 2 /* WARNING - file is empty */
#define SC_DELREC 1 /* WARNING - record read is marked deleted */
#define SC_SUCCESS 0 /* successful function return code */
#define SC_WRTFAIL -1 /* ERROR - file write failure */
#define SC_RDFAIL -2 /* ERROR - file read failure */
#define SC_MEMERR -3 /* ERROR - memory allocation error */
#define SC_SKFAIL -4 /* ERROR - file pointer reposition failed */
#define SC_NOFILE -5 /* ERROR - file not found */
#define SC_FILBAD -6 /* ERROR - file corrupted */
#define SC_BADEXPR -7 /* ERROR - bad user specified key expression */
#define SC_NOHNDL -8 /* ERROR - no handles available */
#define SC_NOPGS -9 /* ERROR - no index pages loaded */
#define SC_BADPG -10 /* ERROR - index page was not loaded */
#define SC_CLOSFAIL -11 /* ERROR - file close failure */
#define SC_BADCMD -12 /* ERROR - invalid command */
#define SC_BADHNDL -13 /* ERROR - invalid handle number */
#define SC_BADFNAME -14 /* ERROR - invalid filename */
#define SC_BADDATE -15 /* ERROR - invalid date */
#define SC_BADTIME -16 /* ERROR - invalid time */
#define SC_NODBT -17 /* ERROR - file not in .DBT format */
#define SC_DBFVERS -18 /* ERROR - invalid dBaseIII version */
#define SC_DBFHLEN -19 /* ERROR - file header length error */
#define SC_DBFDATE -20 /* ERROR - last file change date in error */
#define SC_NULLPARM -21 /* ERROR - parameter address NULL */
#define SC_BADKEYT -22 /* ERROR - invalid key type */
#define SC_KEYLEN -23 /* ERROR - invalid key length */
#define SC_ITEMLEN -24 /* ERROR - item length incorrect */
#define SC_BADROOT -25 /* ERROR - invalid root page */
#define SC_MAXKEYS -26 /* ERROR - bad maximum number of keys per page */
#define SC_FLDCNT -27 /* ERROR - invalid number of fields */
#define SC_BADFLDN -28 /* ERROR - field name invalid */
#define SC_FLDLEN -29 /* ERROR - bad field length */
#define SC_DECPL -30 /* ERROR - decimal places parameter invalid */
#define SC_BADFLDT -31 /* ERROR - invalid field type */
#define SC_RECLEN -32 /* ERROR - invalid record length */
#define SC_BADDATA -33 /* ERROR - bad data */
#define SC_LINELEN -34 /* ERROR - memo soft line length invalid */
#define SC_MDXFLAG -35 /* ERROR - MDX flag in DBF file invalid */
#define SC_MAXWARN 7
#define SC_MAXERR -35
/**********
*
* Program Control Prototypes
*
**********/
signed int scdinit( signed char );
signed int scdterm( void );
signed char *scdvers( void );
/**********
*
* Error Handling Prototypes
*
**********/
#if !defined(sceclr)
#define sceclr() (sc_code = SC_SUCCESS)
#endif
signed char *scemsg( void );
/**********
*
* Defines
*
**********/
#define SC_TRUE 1
#define SC_FALSE 0
/* scdrput definitions */
#define SC_UPDATE 1 /* update current record */
#define SC_ADD 2 /* add new record */
/* scdrcopy, scdrclear, scdkmake definitions */
#define SC_INPUT 1 /* input buffer */
#define SC_OUTPUT 2 /* output buffer */
/* scdkfind definitions */
#define SC_FIRST 1 /* find first key */
#define SC_EXACT 2 /* find exact key (uses record number) */
/* scdfgetmx, scdfputmx definitions */
#define SC_CRUNCHNG 0 /* leave memo buffer unchanged */
#define SC_CRDELETE 1 /* delete soft carriage returns */
/* scdkdatex */
#define SC_DBASE 1 /* YYYYMMDD date string */
#define SC_ASCII 2 /* MM/DD/YY or MM/DD/YYYY date string */
/**********
*
* Type Definitions
*
**********/
typedef struct { /* database field description */
signed char name[11]; /* field name */
signed char type; /* field type
* 'c' or 'C' - character
* 'd' or 'D' - date
* 'f' or 'F' - floating point (binary)
* 'l' or 'L' - logical
* 't' or 'T' - true
* 'f' or 'F' - false
* 'y' or 'Y' - yes
* 'n' or 'N' - no
* '?' - uninitialized
* 'n' or 'N' - floating point (bcd) */
unsigned char len; /* field width */
unsigned char decpl; /* decimal count */
} SC_FIELD;
typedef struct { /* database file information packet */
signed char style; /* file type (dBase3 or dBase4) */
signed char memo; /* memo file required */
signed char mdx; /* dBase4 .MDX file required (true or false) */
signed char trans; /* dBase4 transaction in process (true or false) */
signed char encrypt; /* dBase4 data file encrypted (true or false) */
} SC_DBFINFO;
/* SC_DBFINFO style flag */
#define SC_DB3 0 /* dBase3 type data file */
#define SC_DB4 1 /* dBase4 type data file */
/* SC_DBFINFO memo flag */
#define SC_USEMEMO 2 /* memo file used */
#define SC_NOMEMO 0 /* no memo file required */
/**********
*
* .DBF File Manipulator Prototypes
*
**********/
signed int scddclose( signed char ); /* file handle */
signed int scddcreate(signed char *, /* filename */
signed int, /* number of data fields */
SC_FIELD *); /* field description array */
signed int scddcreatex(signed char *, /* filename */
signed int, /* number of data fields */
SC_FIELD *, /* field description array */
signed char ); /* dBase version (3 or 4) */
signed int scddinfo( signed char, /* file handle */
signed char *, /* filename */
SC_DBFINFO * ); /* file information & status */
signed int scddopen( signed char *, /* file handle */
signed char * ); /* filename */
signed int scddopenx( signed char *, /* file handle */
signed char *, /* filename */
SC_DBFINFO * ); /* file information */
signed int scddsize( signed char, /* file handle */
signed long * ); /* number of data records */
/**********
*
* .DBF Field Manipulator Prototypes
*
**********/
signed int scdfget( signed char, /* file handle */
signed int, /* field number */
void * ); /* buffer for field data */
signed int scdfgets( signed char, /* file handle */
signed int, /* field number */
char * ); /* buffer for field data */
signed int scdfgetsx( signed char, /* file handle */
signed int, /* field number */
char *, /* buffer for field data */
signed int ); /* I/O buffer to be used */
signed int scdfgett( signed char, /* file handle */
signed long, /* record number */
signed char ** ); /* buffer for record data */
signed int scdfgettx( signed char, /* file handle */
signed long, /* record number */
signed char **, /* buffer for record number */
signed int ); /* remove soft carriage returns? */
signed int scdfgetx( signed char, /* file handle */
signed int, /* field number */
void *, /* buffer for field data */
signed int ); /* I/O buffer to be used */
signed int scdfinfo( signed char, /* file handle */
signed int *, /* length of longest field */
SC_FIELD * ); /* field description array */
signed int scdfnam2no(signed char, /* file handle */
signed int *, /* field number */
signed char *); /* field name */
signed int scdfput( signed char, /* file handle */
signed int, /* field number */
void * ); /* buffer for field data */
signed int scdfputs( signed char, /* file handle */
signed int, /* field number */
char * ); /* buffer for field data */
signed int scdfputsx( signed char, /* file handle */
signed int, /* field number */
char *, /* buffer for field data */
signed int ); /* I/O buffer to be used */
signed int scdfputt( signed char, /* file handle */
signed long *, /* record number */
signed char * ); /* buffer for record data */
signed int scdfputtx( signed char, /* file handle */
signed long *, /* record number */
signed char *, /* buffer for record data */
signed int ); /* insert soft carriage returns? */
signed int scdfputx( signed char, /* file handle */
signed int, /* field number */
void *, /* buffer for field data */
signed int ); /* I/O buffer to be used */
/**********
*
* .DBF Record Manipulator Prototypes
*
**********/
signed int scdrclear( signed char, /* file handle */
signed int ); /* which I/O buffer to clear */
signed int scdrcopy( signed char, /* file handle */
signed int ); /* which I/O buffer to copy */
signed int scdrdel( signed char, /* file handle */
signed long ); /* record number to delete */
signed int scdrget( signed char, /* file handle */
signed long ); /* record number to read */
signed int scdrinfo( signed char, /* file handle */
signed int *, /* record length */
signed int *, /* number of data fields */
void **, /* input buffer address */
void ** ); /* output buffer address */
signed int scdrput( signed char, /* file handle */
signed long *, /* record number */
signed int ); /* append or update record */
signed int scdrundel( signed char, /* fiel handle */
signed long ); /* record number */
/**********
*
* dBase3 .DBT File Manipulator Prototypes
*
**********/
signed int scdtclose( signed char ); /* file handle */
signed int scdtcreate(signed char * ); /* filename */
signed int scdtinfo( signed char, /* file handle */
signed char * ); /* filename */
signed int scdtopen( signed char *, /* file handle */
signed char * ); /* filename */
/**********
*
* .NDX File Manipulators Prototypes
*
**********/
signed int scdnclose( signed char ); /* file handle */
signed int scdncreate(signed char *, /* filename */
signed char, /* index key type */
signed char *, /* key expression */
signed char ); /* key length */
signed int scdnexpr( signed char, /* file handle */
signed char * ); /* key expression */
signed int scdninfo( signed char, /* file handle */
signed char *, /* filename */
signed char *, /* index key type */
signed char *, /* key length */
signed int * ); /* expression length */
signed int scdnopen( signed char *, /* file handle */
signed char * ); /* filename */
/**********
*
* .NDX Key Building Prototypes
*
**********/
signed int scdkdate( double *, /* numeric date (for key) */
signed char * ); /* date string (YYYYMMDD) */
signed int scdkdatex( double *, /* numeric date */
signed char *, /* date string */
signed int ); /* date string format type */
signed int scdkmake( signed char, /* .DBF file handle */
signed char, /* .NDX file handle */
void ** ); /* index key */
signed int scdkmakex( signed char, /* .DBF file handle */
signed char, /* .NDX file handle */
void **, /* index key */
signed int ); /* which I/O buffer to use */
/**********
*
* .NDX Key Manipulator Prototypes
*
**********/
signed int scdkadd( signed char, /* file handle */
signed char *, /* key string */
signed long ); /* data record number */
signed int scdkcur( signed char, /* file handle */
signed char *, /* key string */
signed long *); /* data record number */
signed int scdkdel( signed char, /* file handle */
signed char *, /* key string */
signed long ); /* data record number */
signed int scdkfirst( signed char, /* file handle */
signed char *, /* key string */
signed long *); /* data record number */
signed int scdkfind( signed char, /* file handle */
signed char *, /* key string */
signed long *, /* data record number */
signed int); /* exact match or first */
signed int scdklast( signed char, /* file handle */
signed char *, /* key string */
signed long *); /* data record number */
signed int scdknext( signed char, /* file handle */
signed char *, /* key string */
signed long *); /* data record number */
signed int scdkprev( signed char, /* file handle */
signed char *, /* key string */
signed long *); /* data record number */
/**********
*
* .NDX Page Manipulator Prototypes
*
**********/
signed int scdnpinfo( signed char, /* file handle */
signed char *); /* number of index pages loaded */
signed int scdnpnum( signed char, /* file handle */
signed char * ); /* new number of index pages */
/**********
*
* Calendar Definitions
*
**********/
/* sccdxlat */
#define SC_2DBASE 1 /* convert from "mm/dd/[yy]yy" to "yyyymmdd" */
#define SC_2ASCII 8 /* convert from "yyyymmdd" to "mm/dd/yy" */
#define SC_2ASCIIL 10 /* convert from "yyyymmdd" to "mm/dd/yyyy" */
/**********
*
* Calendar Prototypes
*
**********/
signed int sccday( signed char *, /* day of week text string */
signed char); /* numeric day of week */
signed int sccddiff( signed long *, /* difference in days */
signed char *, /* date string (YYYYMMDD) */
signed char *); /* date string */
signed int sccdl2s( signed char *, /* date string */
signed long); /* number of days since 1/1/00 */
signed int sccdn2s( signed char *, /* date string (YYYYMMDD) */
signed int, /* year */
signed int, /* month */
signed int ); /* day */
signed int sccdperm( signed char *, /* number of days in month */
signed char *); /* date string (YYYYMMDD) */
signed int sccdpermi( signed char *, /* number of days in month */
signed int, /* desired year */
signed int); /* desired month */
signed int sccds2l( signed long *, /* number of days since 1/1 0001 */
signed char * ); /* date string (YYYYMMDD) */
signed int sccds2n( signed int *, /* year */
signed int *, /* month */
signed int *, /* day */
signed char * ); /* date string (YYYYMMDD) */
signed int sccdvalid( signed char * ); /* date string (YYYYMMDD) */
signed int sccdxlat( signed char *, /* converted date string */
signed char *, /* source date string */
signed int ); /* conversion method */
signed int sccleap( signed char * ); /* date string (YYYY[MMDD]) */
signed int sccleapi( signed int ); /* year */
signed int sccmonth( signed char *, /* month text string */
signed char); /* numeric month */
/**********
*
* Clock Prototypes
*
**********/
signed int scctdiff( signed int *, /* number of seconds difference */
signed char *, /* time 1 (HH:MM:SS) */
signed char *); /* time 2 */
signed int scctn2s( signed char *, /* time string (HH:MM:SS) */
signed int, /* hours */
signed int, /* minutes */
signed int); /* seconds */
signed int sccts2n( signed int *, /* hours */
signed int *, /* minutes */
signed int *, /* seconds */
signed char *); /* time string (HH:MM:SS) */
signed int scctvalid( signed char * ); /* time string (HH:MM:SS) */
/**********
*
* External Variables
*
**********/
extern signed int sc_code; /* function result code */
extern signed int sc_softlen; /* memo line length */